from flask import Flask
from flask_restful import Api, abort, reqparse, Resource

app = Flask(__name__)
api = Api(app)

todos = [
    {'todo': 'build an API',"done":False},
    {'todo': '过年',"done":False},
    {'todo': 'profit!',"done":False},
]


def abort_if_todo_doesnt_exist(todo_id):
    if todo_id not in todos:
        abort(404, message="Todo {} doesn't exist".format(todo_id))


parser = reqparse.RequestParser()
parser.add_argument('todo')
parser.add_argument('x')
parser.add_argument('done', type=bool)


class Todo(Resource):
    def get(self, todo_id):
        abort_if_todo_doesnt_exist(todo_id)
        return todos[todo_id]

    def delete(self, todo_id):
        abort_if_todo_doesnt_exist(todo_id)
        del todos[todo_id]
        return '', 204



class TodoList(Resource):
    def get(self):
        return todos
    def post(self):
        data = parser.parse_args()
        todos.append(data)

        return 201



api.add_resource(TodoList, '/todos')
api.add_resource(Todo, '/todos/<todo_id>')
if __name__ == '__main__':
    app.run(debug=True)
